/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controladores;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Vector;
import javax.swing.JOptionPane;
import modelos.modelo_ingredientes;
import modelos.modelo_ordenes;
import modelos.modelo_productos;
import vistas.vista_ordenes;

public class controlador_ordenes implements ActionListener {
    vista_ordenes v_ord ;
    modelo_ordenes m_ord = new modelo_ordenes();
    modelo_productos m_pro = new modelo_productos();
    modelo_productos m_pro_guardar = new modelo_productos();
    modelo_ingredientes m_ing_guardar = new modelo_ingredientes();
    ArrayList<modelo_productos> lista_productos = new ArrayList<modelo_productos>();
    ArrayList<modelo_ingredientes>  lista_ingredientes_guardar = new ArrayList<modelo_ingredientes>();
    ArrayList<modelo_productos>  lista_productos_guardar= new ArrayList<modelo_productos>();


    public void actionPerformed(ActionEvent e) {
        String comando = e.getActionCommand();
    if (comando.equals("mas"))
      mas();
    else if (comando.equals("menos"))
      menos();
    else if (comando.equals("registrar"))
      registrar();
    }

     public controlador_ordenes(vista_ordenes v_ord) {
        this.v_ord = v_ord;
    }





     void mas()
    {
     Vector<String> fila = new Vector<String>();
     int posi_producto = v_ord.getCmb_producto().getSelectedIndex();
     m_pro_guardar.setId(lista_productos.get(posi_producto).getId().toString());
     m_pro_guardar.setNombre(lista_productos.get(posi_producto).getNombre().toString());
     m_pro_guardar.setPrecio(lista_productos.get(posi_producto).getPrecio());

     m_ing_guardar.setStock(Float.parseFloat(v_ord.getJtxtcantidad().getValue().toString()));


     fila.add(m_pro_guardar.getNombre());
     fila.add(String.valueOf(m_pro_guardar.getPrecio()));
     fila.add(String.valueOf(v_ord.getJtxtcantidad().getValue()));

     v_ord.getModelo_tabla().addRow(fila);
     lista_productos_guardar.add(m_pro_guardar);
     lista_ingredientes_guardar.add(m_ing_guardar);

    }

    void menos()
    {
        if(v_ord.getModelo_tabla().getRowCount()>0)
        {
         v_ord.getModelo_tabla().removeRow(v_ord.getjTable_ordenes().getSelectedRow());
         lista_productos_guardar.remove(v_ord.getjTable_ordenes().getSelectedRow());
         lista_ingredientes_guardar.remove(v_ord.getjTable_ordenes().getSelectedRow());
         System.out.print(lista_ingredientes_guardar.size());
        }
    }
    

    void registrar()
    {
    
     if(hayVacio())
     {
         float total_general=total_general();
         v_ord.getJtxt_total().setText(String.valueOf(total_general));
        aviso("se ha registrado la orden con exito");
        m_ord.registrar(v_ord.getJtxt_nombre().getText().toString(),Float.parseFloat(v_ord.getJtxt_total().getText().toString()),lista_productos_guardar,lista_ingredientes_guardar);

        v_ord.cancelar();
     }
     else
     {
      aviso("faltan campos por llenar");
     }

    }

    public void cargar_producto()
    {
    lista_productos   = m_pro.lista();
        for (int i = 0; i < lista_productos.size(); i++) {
            v_ord.getCmb_producto().addItem(lista_productos.get(i).getNombre());
        }
    }

   void aviso(String mensaje)
   {
     JOptionPane.showMessageDialog(v_ord, mensaje,"aviso",JOptionPane.INFORMATION_MESSAGE);
   }

   int pregunta(String mensaje)
   {
     int i =JOptionPane.showConfirmDialog(v_ord, mensaje);
     return i;
   }

   public boolean hayVacio()
   {

   if(v_ord.getJtxt_nombre().getText().isEmpty())
       return false;
       else
       return true;
   }

   public float total_general()
   {
         float total_general=0;
         float total_general2=0;

         for (int i = 0; i < v_ord.getModelo_tabla().getRowCount(); i++) {
             total_general= Float.parseFloat(v_ord.getjTable_ordenes().getValueAt(i, 2).toString())*Float.parseFloat(v_ord.getjTable_ordenes().getValueAt(i, 1).toString());
             total_general2+=total_general;
         }
    return total_general2;
   }


}
